/**
 * виджет рубрикатора
 */

;(function($){

  $.widget("fs.rubrics", {
    options     : {text: false, icons: {primary: "ui-icon-triangle-1-s"}, menu: ".rubric-menu", tags: ".rubric-tags"},
  // конструктор
    _create     : function()
                  {
                    var self = $.extend(this, {
                      tags        : this.element.find(this.options.tags),
                      menu        : this.element.
                                      find("a").
                                      button().
                                      filter(":not(:only-child)").
                                      next().
                                      button({text: this.options.text, icons: this.options.icons}).
                                      parent().
                                      buttonset().
                                      end().
                                      removeClass("ui-corner-right").
                                      addClass("ui-corner-tr ui-corner-br").
                                      end().
                                      removeClass("ui-corner-left").
                                      addClass("ui-corner-tl ui-corner-bl").
                                      parent().
                                      find(this.options.menu).
                                      next().
                                      find(":not(a)[href]").
                                      each(function()
                                      {
                                        with($(this))
                                          wrapInner(["<a class='tag-wrapper' href='", "' />"].join(attr("href"))).removeAttr("href");
                                      }).
                                      end().
                                      end(),
                      _menuOnClick: function()
                                    {
                                      var $this = $(this);
                                      var $menu = $this.next();
                                      if ($menu.is(":hidden"))
                                      {
                                        self._hideAll();
                                        var $btn = $this.removeClass("ui-corner-br").prev().removeClass("ui-corner-bl").parent();
                                        var ow   = $btn.width() - 1;
                                        $menu.show();
                                        var nw = Math.max(ow, $menu.width());
                                        $menu.width(nw);
                                        $btn.width(nw + 1);
                                        with ($this.prev())
                                          width(width() + nw - ow);
                                        return false;
                                      }
                                    },
                      _docHandler : function(){self._hideAll();}
                    });
                    this.menu.click(this._menuOnClick);
                    $(document).keyup(this._docHandler).find("body").click(this._docHandler);
                  },
  // деструктор
    destroy     : function()
                  {
                    $(document).unbind("keyup", this._docHandler).find("body").unbind("click", this._docHandler);
                    this.menu.unbind("click", this._menuOnClick).next().find("a.tag-wrapper").each(function()
                    {
                      with ($(this))
                        replaceWith(children().clone(true).attr("href", attr("href")));
                    });
                  },
  // скрыть меню подрубрик
    _hideAll    : function(){this.tags.hide().prev().addClass("ui-corner-br").prev().addClass("ui-corner-bl");}
  });

})(jQuery);
